home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume4 / vms-vi-2 / part03 < prev    next >
Encoding:
Text File  |  1989-02-03  |  17.9 KB  |  522 lines

  1. Path: xanth!mcnc!gatech!bloom-beacon!bu-cs!mirror!necntc!ncoast!allbery
  2. From: gregg@a.cs.okstate.edu (Gregg Wonderly)
  3. Newsgroups: comp.sources.misc
  4. Subject: v04i094: TPUVI for VMS part 3 of 17
  5. Message-ID: <8809212056.AA07672@uunet.UU.NET>
  6. Date: 26 Sep 88 01:48:20 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Reply-To: gregg@a.cs.okstate.edu (Gregg Wonderly)
  9. Lines: 510
  10. Approved: allbery@ncoast.UUCP
  11.  
  12. Posting-number: Volume 4, Issue 94
  13. Submitted-by: "Gregg Wonderly" <gregg@a.cs.okstate.edu>
  14. Archive-name: vms-vi-2/Part03
  15.  
  16. $ show default
  17. $ if f$search("DOC.DIR;1") .eqs. "" then -
  18.      CREATE/LOG/DIRECTORY [.DOC]
  19. $ write sys$output "Creating [.DOC]VI.RNO"
  20. $ create [.DOC]VI.RNO
  21. $ DECK/DOLLARS="*$*$*EOD*$*$*"
  22. .req "vi_1.rno"
  23. .req "vi_2.rno"
  24. *$*$*EOD*$*$*
  25. $ if f$search("DOC.DIR;1") .eqs. "" then -
  26.      CREATE/LOG/DIRECTORY [.DOC]
  27. $ write sys$output "Creating [.DOC]VI.RNT"
  28. $ create [.DOC]VI.RNT
  29. $ DECK/DOLLARS="*$*$*EOD*$*$*"
  30. .! DSRTOC version V2.1-09
  31. .! RUNOFF/CONTENTS/OUT=VI VI.BRN
  32. .SAVE
  33. .NO FLAGS ALL
  34. .NO FLAGS BREAK        .NO FLAGS CAPITALIZE    .NO FLAGS ENDFOOTNOTE
  35. .NO FLAGS HYPHENATE    .NO FLAGS INDEX        .NO FLAGS PERIOD
  36. .NO FLAGS SPACE        .NO FLAGS SUBSTITUTE
  37. .FLAGS ACCEPT _        .FLAGS BOLD *        .FLAGS COMMENT !
  38. .FLAGS LOWERCASE \    .FLAGS OVERSTRIKE %    .FLAGS UNDERLINE &
  39. .FLAGS UPPERCASE ^
  40. .FLAGS ALL
  41. .NO FILL        .NO JUSTIFY
  42. .LEFT MARGIN 8        .RIGHT MARGIN 70    .PAGE SIZE , 70
  43. .CENTER;CONTENTS
  44. .BLANK
  45. .TEST PAGE 2
  46.  
  47. 1       Table of contents  . . . . . . . . . . . . . . . . . 2
  48. .ifnot global
  49. 2       Purpose of this document . . . . . . . . . . . . . . 3
  50. .endif global
  51. .ifnot global
  52. 3       Introduction to VI . . . . . . . . . . . . . . . . . 3
  53. .endif global
  54. .ifnot global
  55. 4       Extensions to VI . . . . . . . . . . . . . . . . . . 3
  56. .endif global
  57. .ifnot global
  58. 5       Using an initialization file . . . . . . . . . . . . 4
  59. .endif global
  60. .ifnot global
  61. 6       Supported EX mode commands . . . . . . . . . . . . . 5
  62. .endif global
  63. .if global
  64. 6_.1       Abort edit . . . . . . . . . . . . . . . . . . . . 5
  65. .endif global
  66. .ifnot global
  67. 6_.2       Change output file . . . . . . . . . . . . . . . . 5
  68. .endif global
  69. .ifnot global
  70. 6_.3       Compile TPU  . . . . . . . . . . . . . . . . . . . 6
  71. .endif global
  72. .ifnot global
  73. 6_.4       Copy lines . . . . . . . . . . . . . . . . . . . . 6
  74. .endif global
  75. .ifnot global
  76. 6_.5       Create buffers . . . . . . . . . . . . . . . . . . 6
  77. .endif global
  78. .ifnot global
  79. 6_.6       Create key macro . . . . . . . . . . . . . . . . . 6
  80. .endif global
  81. .ifnot global
  82. 6_.7       Delete buffers . . . . . . . . . . . . . . . . . . 7
  83. .endif global
  84. .ifnot global
  85. 6_.8       Delete lines . . . . . . . . . . . . . . . . . . . 7
  86. .endif global
  87. .ifnot global
  88. 6_.9       Edit new file  . . . . . . . . . . . . . . . . . . 7
  89. .endif global
  90. .ifnot global
  91. 6_.10      Execute command file . . . . . . . . . . . . . . . 8
  92. .endif global
  93. .ifnot global
  94. 6_.11      Fill text region . . . . . . . . . . . . . . . . . 8
  95. .endif global
  96. .ifnot global
  97. 6_.12      Global Substitution  . . . . . . . . . . . . . . . 8
  98. .endif global
  99. .ifnot global
  100. 6_.13      Goto Line  . . . . . . . . . . . . . . . . . . . . 8
  101. .endif global
  102. .ifnot global
  103. 6_.14      Goto tag in file . . . . . . . . . . . . . . . . . 9
  104. .endif global
  105. .ifnot global
  106. 6_.15      Help . . . . . . . . . . . . . . . . . . . . . . . 9
  107. .endif global
  108. .ifnot global
  109. 6_.16      Invert case  . . . . . . . . . . . . . . . . . . . 9
  110. .endif global
  111. .ifnot global
  112. 6_.17      Learn Key Strokes  . . . . . . . . . . . . . . . . 9
  113. .endif global
  114. .ifnot global
  115. 6_.18      Lower case . . . . . . . . . . . . . . . . . . .  10
  116. .endif global
  117. .ifnot global
  118. 6_.19      Message buffer . . . . . . . . . . . . . . . . .  10
  119. .endif global
  120. .ifnot global
  121. 6_.20      Move lines . . . . . . . . . . . . . . . . . . .  10
  122. .endif global
  123. .ifnot global
  124. 6_.21      Next file  . . . . . . . . . . . . . . . . . . .  10
  125. .endif global
  126. .ifnot global
  127. 6_.22      Perform Macros . . . . . . . . . . . . . . . . .  10
  128. .endif global
  129. .ifnot global
  130. 6_.23      Previous file  . . . . . . . . . . . . . . . . .  11
  131. .endif global
  132. .ifnot global
  133. 6_.24      Print out lines  . . . . . . . . . . . . . . . .  11
  134. .endif global
  135. .ifnot global
  136. 6_.25      Read file into buffer  . . . . . . . . . . . . .  11
  137. .endif global
  138. .ifnot global
  139. 6_.26      Rewind file list . . . . . . . . . . . . . . . .  11
  140. .endif global
  141. .ifnot global
  142. 6_.27      Select regions . . . . . . . . . . . . . . . . .  11
  143. .endif global
  144. .ifnot global
  145. 6_.28      Set default dir  . . . . . . . . . . . . . . . .  11
  146. .endif global
  147. .ifnot global
  148. 6_.29      Set options  . . . . . . . . . . . . . . . . . .  12
  149. .endif global
  150. .ifnot global
  151. 6_.30      Show buffers . . . . . . . . . . . . . . . . . .  12
  152. .endif global
  153. .ifnot global
  154. 6_.31      Showing Current Version  . . . . . . . . . . . .  12
  155. .endif global
  156. .ifnot global
  157. 6_.32      Show file list . . . . . . . . . . . . . . . . .  12
  158. .endif global
  159. .ifnot global
  160. 6_.33      Show Tags  . . . . . . . . . . . . . . . . . . .  13
  161. .endif global
  162. .ifnot global
  163. 6_.34      Spawn command  . . . . . . . . . . . . . . . . .  13
  164. .endif global
  165. .ifnot global
  166. 6_.35      Spawn subprocess . . . . . . . . . . . . . . . .  13
  167. .endif global
  168. .ifnot global
  169. 6_.36      Substitution . . . . . . . . . . . . . . . . . .  13
  170. .endif global
  171. .ifnot global
  172. 6_.37      Text Abbreviations . . . . . . . . . . . . . . .  14
  173. .endif global
  174. .ifnot global
  175. 6_.38      Unmap key macros . . . . . . . . . . . . . . . .  14
  176. .endif global
  177. .ifnot global
  178. 6_.39      Upper case . . . . . . . . . . . . . . . . . . .  14
  179. .endif global
  180. .ifnot global
  181. 6_.40      Write buffer . . . . . . . . . . . . . . . . . .  14
  182. .endif global
  183. .ifnot global
  184. 6_.41      Write and exit . . . . . . . . . . . . . . . . .  15
  185. .endif global
  186. .ifnot global
  187. 7       Set options  . . . . . . . . . . . . . . . . . . .  15
  188. .endif global
  189. .ifnot global
  190. 7_.1       Auto Send to DCL . . . . . . . . . . . . . . . .  15
  191. .endif global
  192. .ifnot global
  193. 7_.2       Auto line wrap . . . . . . . . . . . . . . . . .  16
  194. .endif global
  195. .ifnot global
  196. 7_.3       Auto write . . . . . . . . . . . . . . . . . . .  16
  197. .endif global
  198. .ifnot global
  199. 7_.4       Case insensitive search  . . . . . . . . . . . .  16
  200. .endif global
  201. .ifnot global
  202. 7_.5       Change file list . . . . . . . . . . . . . . . .  16
  203. .endif global
  204. .ifnot global
  205. 7_.6       Error Bells  . . . . . . . . . . . . . . . . . .  16
  206. .endif global
  207. .ifnot global
  208. 7_.7       Expand tabs  . . . . . . . . . . . . . . . . . .  17
  209. .endif global
  210. .ifnot global
  211. 7_.8       Line report  . . . . . . . . . . . . . . . . . .  17
  212. .endif global
  213. .ifnot global
  214. 7_.9       No write . . . . . . . . . . . . . . . . . . . .  17
  215. .endif global
  216. .ifnot global
  217. 7_.10      Paragraph delimiters . . . . . . . . . . . . . .  17
  218. .endif global
  219. .ifnot global
  220. 7_.11      Read Only Files  . . . . . . . . . . . . . . . .  18
  221. .endif global
  222. .ifnot global
  223. 7_.12      Regular expression use . . . . . . . . . . . . .  18
  224. .endif global
  225. .ifnot global
  226. 7_.13      Screen length  . . . . . . . . . . . . . . . . .  18
  227. .endif global
  228. .ifnot global
  229. 7_.14      Screen width . . . . . . . . . . . . . . . . . .  18
  230. .endif global
  231. .ifnot global
  232. 7_.15      Scroll amount  . . . . . . . . . . . . . . . . .  19
  233. .endif global
  234. .ifnot global
  235. 7_.16      Section delimiters . . . . . . . . . . . . . . .  19
  236. .endif global
  237. .ifnot global
  238. 7_.17      Shift width  . . . . . . . . . . . . . . . . . .  19
  239. .endif global
  240. .ifnot global
  241. 7_.18      Show settings  . . . . . . . . . . . . . . . . .  19
  242. .endif global
  243. .ifnot global
  244. 7_.19      Tab stops  . . . . . . . . . . . . . . . . . . .  20
  245. .endif global
  246. .ifnot global
  247. 7_.20      Tag Case . . . . . . . . . . . . . . . . . . . .  20
  248. .endif global
  249. .ifnot global
  250. 7_.21      Tags files . . . . . . . . . . . . . . . . . . .  20
  251. .endif global
  252. .ifnot global
  253. 7_.22      Type ahead . . . . . . . . . . . . . . . . . . .  20
  254. .endif global
  255. .ifnot global
  256. 7_.23      Undo and maps  . . . . . . . . . . . . . . . . .  20
  257. .endif global
  258. .ifnot global
  259. 7_.24      Wrap on search . . . . . . . . . . . . . . . . .  21
  260. .endif global
  261. .ifnot global
  262. 8       Additional key strokes . . . . . . . . . . . . . .  21
  263. .endif global
  264. .ifnot global
  265. 8_.1       Key pad keys used  . . . . . . . . . . . . . . .  21
  266. .endif global
  267. .ifnot global
  268. 8_.2       Keyboard keys used . . . . . . . . . . . . . . .  22
  269. .endif global
  270. .ifnot global
  271. 9       Windows and buffers  . . . . . . . . . . . . . . .  22
  272. .endif global
  273. .ifnot global
  274. 10      Display differences  . . . . . . . . . . . . . . .  23
  275. .endif global
  276. .ifnot global
  277. 11      Tag files  . . . . . . . . . . . . . . . . . . . .  23
  278. .endif global
  279. .ifnot global
  280. 12      Kept Editors . . . . . . . . . . . . . . . . . . .  24
  281. .endif global
  282. .ifnot global
  283. 13      Other TPU's  . . . . . . . . . . . . . . . . . . .  24
  284. .endif global
  285. .ifnot global
  286. 14      The DCL buffer . . . . . . . . . . . . . . . . . .  24
  287. .endif global
  288. .ifnot global
  289. 15      TPU bugs revealed  . . . . . . . . . . . . . . . .  25
  290. .endif global
  291. .RESTORE
  292. *$*$*EOD*$*$*
  293. $ if f$search("DOC.DIR;1") .eqs. "" then -
  294.      CREATE/LOG/DIRECTORY [.DOC]
  295. $ write sys$output "Creating [.DOC]VIDOC.COM"
  296. $ create [.DOC]VIDOC.COM
  297. $ DECK/DOLLARS="*$*$*EOD*$*$*"
  298. $ ! This command procedure builds copies of the various
  299. $ ! VI documentation files
  300. $ !
  301. $ DO="@[-.EXE]DO"
  302. $ IF F$LOGICAL ("VI$ROOT") .NES. "" THEN DO="@[EXE]DO"
  303. $ !
  304. $ RM=""
  305. $ IF P2 .NES. "" THEN RM=P2
  306. $ IF P1 .NES. "" THEN GOTO 'P1'
  307. $ !
  308. $ ! Build the printable manual by default
  309. $ !
  310. $ MANUAL:
  311. $    VARS="MANUAL" ! Actually there is no such variant, but something is needed
  312. $    EXT="MEM"
  313. $    FILE="VI"
  314. $    IF RM .EQS. "" THEN RM=8
  315. $    GOTO PROCESS
  316. $!
  317. $! Build the tutorial
  318. $!
  319. $ TUTOR:
  320. $    VARS="MANUAL"
  321. $    EXT="MEM"
  322. $    FILE="TUTOR"
  323. $    IF RM .EQS. "" THEN RM=8
  324. $    GOTO PROCESS
  325. $ !
  326. $ ! Build the on-line help manual
  327. $ !
  328. $ HELP:
  329. $    VARS="SYSTEM"
  330. $    EXT="HLP"
  331. $    FILE="VI"
  332. $    IF RM .EQS. "" THEN RM=0
  333. $    GOTO FINAL
  334. $ !
  335. $ PROCESS:
  336. $ !
  337. $    DO RUNOFF/LOG/OUT=NLA0:/RIGHT='RM'/INTERMEDIATE/MESS=USER/VAR='VARS' -
  338.            'FILE'.RNO
  339. $ !
  340. $ ! Do the table of contents
  341. $ !
  342. $    DO RUNOFF/CONTENTS/OUT='FILE' 'FILE'.BRN
  343. $    DO RUNOFF/INDEX/OUT='FILE' 'FILE'.BRN
  344. $ !
  345. $ FINAL:
  346. $    DO RUNOFF/LOG/OUT='FILE'.'EXT'/RIGHT='RM'/MESS=USER/VAR='VARS' 'FILE'.RNO
  347. $    DO PURGE 'FILE'.'EXT','FILE'.RNT
  348. $ !
  349. $    DO DELETE 'FILE'.BRN;*
  350. $ !
  351. $    IF P1 .NES. "HELP" THEN EXIT
  352. $ !
  353. $ INSTALL_HELP:
  354. $ !
  355. $ ! Reinstall help file
  356. $ !
  357. $    WRITE SYS$OUTPUT " "
  358. $   IF F$SEARCH("VI.HLB") .EQS. "" THEN DO LIB/LOG/CREATE/HELP VI
  359. $    INQUIRE/NOPUNCT HELPLIB "Name of library to install HELP files in? "
  360. $    DO LIB/REPLACE/HELP 'HELPLIB' VI.'EXT'
  361. $    EXIT
  362. $ !
  363. $ ! Just install the HELP file
  364. $ !
  365. $ HELPINST:
  366. $    EXT="HLP"
  367. $    VARS="HELP"
  368. $    GOTO INSTALL_HELP
  369. *$*$*EOD*$*$*
  370. $ if f$search("DOC.DIR;1") .eqs. "" then -
  371.      CREATE/LOG/DIRECTORY [.DOC]
  372. $ write sys$output "Creating [.DOC]README."
  373. $ create [.DOC]README.
  374. $ DECK/DOLLARS="*$*$*EOD*$*$*"
  375. There are 17 parts to the distribution of VI written in TPU.  The first,
  376. this file, is a plain text file.  The remainder, are DCL command files.
  377. Files 1-16 should each be executed as DCL procedures in sequence.  Below
  378. is a sequence of steps that should allow you to get VI up and running.
  379.  
  380.     1)  You should pick a directory to place VI under. Three subdirectories
  381.         will be created during the unpacking process.  They are [.SRC],
  382.         [.EXE], and [.DOC].  The directory names should reveal the purposes of
  383.         these directories. 
  384.  
  385.     2)  Place all 17 of the VI parts into the directory chosen in step 1.
  386.         For each part, 1 through 16, execute each file as a command procedure
  387.         using the command "@<filename>", where <filename> is the name of
  388.         the file to execute (e.g. @VI_001.COM, followed by @VI_002.COM, etc).
  389.         During the execution of VI_016, several diagnostic messages will
  390.         be displayed.  You should only pay attention to the final message
  391.         that says that the section file was either installed properly or
  392.         was not.
  393.  
  394. NOTE:
  395.         [.SRC]MAKE.COM invokes the $ INSTALL program to REPLACE the
  396.         VI$ROOT:[EXE]VI.GBL file IFF it is already installed.  One possible
  397.         diagnostic message from INSTALL says 
  398.  
  399. %INSTALL-E-OPENIN, error opening VI$ROOT:<EXE>VI.GBL; as input
  400. -RMS-F-DEV, error in device name or inappropriate device type for operation
  401.  
  402.         and can be ignored since, obviously, there is no such logical name
  403.         defined.
  404.  
  405.         If you have previously installed VI on your machine, but, VI.GBL is
  406.         not 'installed', then you will get a diagnostic to the effect of 
  407.  
  408. %INSTALL-W-FAIL, failed to DELETE entry for SOME_DEVICE:<SOME_DIRECTORY>VI.GBL
  409. -INSTALL-E-NOKFEFND, Known File Entry not found
  410.  
  411.         This can also be ignored.
  412.  
  413.         If you previously installed VI on your machine, and VI.GBL is
  414.         'installed', then this procedure will replace the old one with what
  415.         ever is the latest version of VI.GBL in VI$ROOT:[EXE].  You MUST
  416.         decide whether or not this is what you want to do.  You should EDIT
  417.         [.SRC]MAKE.COM and comment out the INSTALL invocation if desired.
  418.  
  419.     3)  After executing the VI_016 command file, you should set default to the
  420.         [.SRC] directory, and use the command "$ @make exe,tpusubs" to create
  421.         the VI.EXE executable, and the CALL_USER routines for VI to use. 
  422.  
  423.     4)  Next, set default to [-.DOC] (from the SRC directory), and execute
  424.         the command "$ @VIDOC", and "$ @VIDOC HELP" to create a printable
  425.         version of the current documentation, as well as a HELP file
  426.         that VI can use.  When asked the question:
  427.  
  428.             Name of library to install HELP files in?
  429.  
  430.         you should probably answer, VI, unless you really desire to put the
  431.         help file into a library in another directory.  VI.TPU contains the
  432.         path VI$ROOT:[DOC]VI.HLB as the place where it will work from, so if
  433.         you do not place the help file in this library (It will automatically
  434.         be created for you), then you must edit VI.TPU to contain the proper
  435.         path. 
  436.  
  437.     5)  Here you have a decision to make.  I have written an interface to
  438.         callable TPU, [-.SRC]VI.MAR.  If you wish to use this interface,
  439.         then there must be a CLD definition for it installed in DCLTABLES.
  440.         This is really only necessary for using VI as a SUB-process, but
  441.         I find it convienent to install the CLD so that I do not have
  442.         to wait for SET COMMAND to complete when I log in.  If do not
  443.         wish to use the callable TPU interface then go to the next step NOW,
  444.         otherwise hang tight.
  445.  
  446.         The CLD definition that needs to be installed is in [-.EXE]VI.CLD.  If
  447.         you do not have sufficient privileges to install a new DCLTABLES you
  448.         should get prepared to do so, or find someone that will do it for you
  449.         (now is not entirely necessary, as you can skip to step 6, and do this
  450.         later). 
  451.  
  452.         a)  Take the time to examine the CLD, and make sure it is ok for
  453.             your installation.  If you are on a cluster, then there is
  454.             some extra work that I won't describe here since I have never
  455.             done it.  Basically you need to do the following set of commands.
  456.             (the dollar signs are provide by DCL in case it wasn't obvious).
  457.  
  458.             $ SET COMMAND [-.EXE]VI.CLD/TABLE=SYS$SHARE:DCLTABLES.EXE/OUT=-
  459.             _$ SYS$SHARE:DCLTABLES.EXE
  460.             $ MCR INSTALL
  461.             INSTALL>SYS$SHARE:DCLTABLES/REPLACE
  462.             INSTALL>EXIT
  463.  
  464.         b)  This should be all that single CPU sites need to do.  If you
  465.             have a different arrangement at your sight that requires
  466.             something different, then you would know that better than I.
  467.             Remeber that you MUST logout and log back in to have the updated
  468.             DCLTABLES available to your process.  Step 8, below, can not be
  469.             done unless you either 1) do not do (c) below, or 2) you logout and
  470.             log back in after reinstalling DCLTABLES.
  471.  
  472.         c)  [-.EXE]VI.COM, and [-.EXE]VISETUP.COM contain uses of the symbol,
  473.             "VI".  This symbol is normally equated to "EDIT/TPU".  Once you
  474.             have made the changes necessary to update DCLTABLES, then these
  475.             references should be changed.  In [-.EXE]VI.COM, change VI to
  476.             be "VI", instead of "EDIT/TPU".  In [-.EXE]VISETUP.COM, delete
  477.             the assignment to the variable VI, as the comment there says
  478.             to.
  479.  
  480.     6)  Next, set default to [-.EXE] (from [.DOC]), and edit the file
  481.         VISETUP.COM.  This file must be executed by each user wishing to
  482.         use VI before they can use it.  You should change the definition of
  483.         VI$ROOT to be the parent directory of the directory you are in NOW.
  484.         E.g. if you are in the directory DUA0:[PUBLIC.VI.DOC], then VI$ROOT
  485.         should be defined to be DUA0:[PUBLIC.VI.].  Note that this file
  486.         potentially defines 3 symbols.  VI allows normal use of VI, VIS
  487.         allows use of the VI.COM procedure to run VI in a subprocess, and
  488.         VIEW allows READONLY editing of a file (as in UNIX).
  489.  
  490.     7)  The command file VI.COM is used to envoke VI in a sub-process
  491.         so that a minimal amount of overhead for image activation will
  492.         be incurred by the system.  In the VI.COM that you have, there
  493.         are invocations of a SUSPEND, and a RESUME command.  I use these
  494.         commands to suspend kept editors while they are not it use so that
  495.         they will be swapped out or trimmed by the SWAPPER in a more timely
  496.         manner.  This will allow their memory to be put to use by other
  497.         processes whenever possible.  If you do not wish to do this and/or
  498.         do not have these facilities available to you, then you should comment
  499.         out these command lines.
  500.  
  501.         You may substitute the use of SET PROC/SUSPEND and SET PROC/RESUME
  502.         for these commands.  See the DCL manual or HELP for usage.
  503.  
  504.     8)  Next, you should be ready to give VI a trial run.  Execute the
  505.         VISETUP.COM procedure in [.EXE].  Then type VI, and hit return.
  506.         You should be off and running.
  507.  
  508. ------------------------
  509. Gregg Wonderly
  510. Department of Mathematics
  511. Oklahoma State University
  512.  
  513. INTERNET:      gregg@nemo.math.okstate.edu
  514. UUCP:          {ihnp4, rutgers, isucs1}!okstate!nemo.math.okstate.edu!gregg
  515.  
  516. US MAIL:
  517. 401 Mathematical Sciences
  518. Oklahoma State University
  519. Stillwater, OK  74078
  520. *$*$*EOD*$*$*
  521. $ exit
  522.